/******************************************************************************* * Copyright (c) 2013, 2015 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.debug.tests.core; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.URIUtil; import org.eclipse.jdt.debug.testplugin.JavaTestPlugin; import org.eclipse.jdt.internal.launching.JavaFxLibraryResolver; import org.eclipse.jdt.launching.ILibraryLocationResolver; public class VMInstallTestsLibraryLocationResolver implements ILibraryLocationResolver { // This used to be in VMInstallTests. Moved here to support headless test runs, // which previously failed because VMInstallTests extends a UI class. static boolean isTesting = false; static boolean applies(IPath path) { if (!isTesting) { return false; } for (int i = 0; i < path.segmentCount(); i++) { if ("ext".equals(path.segment(i))) { return !JavaFxLibraryResolver.JFXRT_JAR.equals(path.lastSegment()); } } return false; } /* * (non-Javadoc) * * @see org.eclipse.jdt.launching.ILibraryLocationResolver#getPackageRoot(org.eclipse.core.runtime.IPath) */ @Override public IPath getPackageRoot(IPath libraryPath) { if (applies(libraryPath)) { return new Path("src"); } return Path.EMPTY; } /* * (non-Javadoc) * * @see org.eclipse.jdt.launching.ILibraryLocationResolver#getSourcePath(org.eclipse.core.runtime.IPath) */ @Override public IPath getSourcePath(IPath libraryPath) { if (applies(libraryPath)) { File file = JavaTestPlugin.getDefault().getFileInPlugin(new Path("testresources/test_resolver_src.zip")); if (file.isFile()) { return new Path(file.getAbsolutePath()); } } return Path.EMPTY; } /* * (non-Javadoc) * * @see org.eclipse.jdt.launching.ILibraryLocationResolver#getJavadocLocation(org.eclipse.core.runtime.IPath) */ @Override public URL getJavadocLocation(IPath libraryPath) { if (applies(libraryPath)) { File file = JavaTestPlugin.getDefault().getFileInPlugin(new Path("testresources/test_resolver_javadoc.zip")); if (file.isFile()) { try { return URIUtil.toURL(file.toURI()); } catch (MalformedURLException e) { e.printStackTrace(); } } } return null; } /* * (non-Javadoc) * * @see org.eclipse.jdt.launching.ILibraryLocationResolver#getIndexLocation(org.eclipse.core.runtime.IPath) */ @Override public URL getIndexLocation(IPath libraryPath) { if (applies(libraryPath)) { File file = JavaTestPlugin.getDefault().getFileInPlugin(new Path("testresources/test_resolver_index.index")); if (file.isFile()) { try { return URIUtil.toURL(file.toURI()); } catch (MalformedURLException e) { e.printStackTrace(); } } } return null; } }